import request from "@/utils/request";

/**
 * 获取攻略详情
 * @param {number} id - 攻略ID
 * @returns {Promise} - 请求Promise对象
 */
export const getGuideDetail = (id) => {
    return request({
        url: `/api/travel-guide/detail/${id}`,
        method: "get"
    });
};

/**
 * 获取热门攻略
 * @param {number} limit - 返回的攻略数量上限
 * @returns {Promise} - 请求Promise对象
 */
export const getHotGuides = (limit) => {
    return request({
        url: `/travel-guide/hot/${limit}`,
        method: "get"
    });
};

/**
 * 按目的地查询攻略
 * @param {string} destination - 目的地名称
 * @returns {Promise} - 请求Promise对象
 */
export const getByDestination = (destination) => {
    return request({
        url: `/travel-guide/destination/${destination}`,
        method: "get"
    });
};

/**
 * 获取指定作者的攻略
 * @param {number} authorId - 作者ID
 * @returns {Promise} - 请求Promise对象
 */
export const getByAuthor = (authorId) => {
    return request({
        url: `/travel-guide/author/${authorId}`,
        method: "get"
    });
};

/**
 * 获取推荐攻略
 * @param {number} limit - 返回的攻略数量上限
 * @returns {Promise} - 请求Promise对象
 */
export const getFeatured = (limit) => {
    return request({
        url: `/travel-guide/featured/${limit}`,
        method: "get"
    });
};

/**
 * 获取编辑推荐攻略
 * @param {number} limit - 返回的攻略数量上限
 * @returns {Promise} - 请求Promise对象
 */
export const getEditorChoice = (limit) => {
    return request({
        url: `/travel-guide/editor-choice/${limit}`,
        method: "get"
    });
};

/**
 * 创建新攻略
 * @param {Object} guide - 攻略对象
 * @returns {Promise} - 请求Promise对象
 */
export const createGuide = (guide) => {
    return request({
        url: "/travel-guide/create",
        method: "post",
        data: guide
    });
};

/**
 * 更新攻略信息
 * @param {Object} guide - 更新后的攻略对象
 * @returns {Promise} - 请求Promise对象
 */
export const updateGuide = (guide) => {
    return request({
        url: "/travel-guide/update",
        method: "put",
        data: guide
    });
};

/**
 * 删除攻略
 * @param {number} id - 要删除的攻略ID
 * @returns {Promise} - 请求Promise对象
 */
export const deleteGuide = (id) => {
    return request({
        url: `/travel-guide/delete/${id}`,
        method: "delete"
    });
};

/**
 * 上传攻略封面图片
 * @param {File} file - 上传的图片文件
 * @param {number} guideId - 攻略ID
 * @returns {Promise} - 请求Promise对象
 */
export const uploadCover = (file, guideId) => {
    const formData = new FormData();
    formData.append("file", file);
    formData.append("guideId", guideId);

    return request({
        url: "/travel-guide/upload-cover",
        method: "post",
        data: formData,
        headers: {
            "Content-Type": "multipart/form-data"
        }
    });
};

/**
 * 点赞攻略
 * @param {number} id - 攻略ID
 * @returns {Promise} - 请求Promise对象
 */
export const likeGuide = (id) => {
    return request({
        url: `/travel-guide/like/${id}`,
        method: "post"
    });
};

/**
 * 收藏攻略
 * @param {number} id - 攻略ID
 * @returns {Promise} - 请求Promise对象
 */
export const favoriteGuide = (id) => {
    return request({
        url: `/travel-guide/favorite/${id}`,
        method: "post"
    });
};

export const getByUserId = (id) => {
    return request({
        url: `/api/travel-guide/author/${id}`,
        method: "get"
    });
};